package DA;

import BE.BEPaleta;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

public class DAPaleta
{
    //MANTENIMIENTO
    public ResultSet buscarPallets(BEPaleta pallet,int tipoBusqueda)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        ResultSet rs = null;
        Statement s = null;
        String query = "SELECT p.IDPALETA, p.NOMBRE, t.NOMBRE, p.DESCRIPCION, p.ESTADO"
                     + " FROM PALETA p, TIPOPALETA t"
                     + " WHERE p.IDTIPOPALLET = t.IDTIPOPALETA AND p.NOMBRE LIKE '%" + pallet.getNombre() + "%'";

        if (pallet.getEstado() != 2)
            query += " AND p.ESTADO = '" + pallet.getEstado() + "'";
        if (pallet.getIdTipoPallet() > 0)
            query += " AND p.IDTIPOPALLET = " + pallet.getIdTipoPallet();

        if (tipoBusqueda == 0 ) //busqueda de todos los datos
            query = "SELECT p.IDPALETA, p.NOMBRE, t.NOMBRE, p.DESCRIPCION, p.ESTADO"
                  + " FROM PALETA p, TIPOPALETA t"
                  + " WHERE p.IDTIPOPALLET = t.IDTIPOPALETA";

        try
        {
            con = bd.conectar();
            s = con.createStatement();
            rs = s.executeQuery(query);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos",
                                          "Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }
        bd.cierraConexion(con);
        return rs;
    }

    //ELIMINAR
    public int eliminarPallet (int idPallet)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        String query = "UPDATE PALETA SET ESTADO = '0' WHERE IDPALETA = " + idPallet;
        try
        {
            con = bd.conectar();
            s = con.createStatement();
            s.executeUpdate(query);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problemas al momento de borrar datos",
                                          "Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return 1;
        }

        bd.cierraConexion(con);
        return 0;
    }

    //AGREGAR
    public int agregarPallet (BEPaleta pallet)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        PreparedStatement s = null;
        String query = "INSERT INTO PALETA (IDTIPOPALLET, DESCRIPCION, ESTADO, NOMBRE)"
                     + " VALUES (" + pallet.getIdTipoPallet() + ",'" + pallet.getDescripcion() +
                       "','1','" + pallet.getNombre() + "')";
        try
        {
           con = bd.conectar();
            s = con.prepareStatement(query);
            s.executeUpdate();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problemas al momento de insertar datos",
                        "Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return 1;
        }

        bd.cierraConexion(con);
        return 0;
    }

    public boolean existeNombre (String nombre)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        ResultSet rs = null;
        Statement s = null;
        String query = "SELECT COUNT(IDPALETA) AS CANTIDAD "
                     + "FROM PALETA WHERE NOMBRE = '" + nombre + "'";
        try
        {
            con = bd.conectar();
            s = con.createStatement();
            rs = s.executeQuery(query);

            rs.next();
            if (rs.getInt("CANTIDAD") > 0)
                return true;
        } catch (Exception e) {
            bd.cierraConexion(con);
            return false;
        }

        bd.cierraConexion(con);
        return false;
    }

    //MODIFICAR
    public BEPaleta getPalletbyId (int idPallet)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        ResultSet rs = null;

        BEPaleta pallet = null;
        String query = "SELECT * FROM PALETA WHERE IDPALETA = " + idPallet;

        try
        {
            con = bd.conectar();
            s = con.createStatement();
            rs = s.executeQuery(query);

            while(rs.next())
            {
                pallet = new BEPaleta();
                pallet.setIdPallet(rs.getInt("IDPALETA"));
                pallet.setIdTipoPallet(rs.getInt("IDTIPOPALLET"));
                pallet.setNombre(rs.getString("NOMBRE"));
                pallet.setDescripcion(rs.getString("DESCRIPCION"));
                pallet.setEstado(rs.getInt("ESTADO"));
            }
        }
        catch (Exception e)
        {
          JOptionPane.showMessageDialog(null,"Error al obtener paleta",
                                          "Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }

        bd.cierraConexion(con);
        return pallet;
    }

    public int modificaPallet (BEPaleta pallet)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        String query = "UPDATE PALETA SET NOMBRE = '" + pallet.getNombre() +
                       "', DESCRIPCION = '" + pallet.getDescripcion() + "', ESTADO = " +
                       pallet.getEstado() + " WHERE " +
                       "IDPALETA = " + pallet.getIdPallet();

        try
        {
            con = bd.conectar();
            s = con.createStatement();
            s.executeUpdate(query);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problemas al momento de acutializar datos","Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return 1;
        }

        bd.cierraConexion(con);
        return 0;
    }


    //#############################
 
     public List<BEPaleta> listaPallets ()
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        ResultSet rs = null;

        List<BEPaleta> pallets = null;
        BEPaleta pallet = null;
        String query = "SELECT * FROM PALLET";

        try
        {
            con = bd.conectar();
            s = con.createStatement();
            rs = s.executeQuery(query);

            pallets = new ArrayList<BEPaleta>();
            while (rs.next())
            {
                pallet = new BEPaleta();
            pallet.setIdPallet(rs.getInt("IDPALLET"));
            pallet.setIdTipoPallet(rs.getInt("IDTIPOPALLET"));
            pallet.setNombre(rs.getString("NOMBRE"));
            pallet.setDescripcion(rs.getString("DESCRIPCION"));

            pallets.add(pallet);
            }

        }
        catch (Exception e)
        {
            bd.cierraConexion(con);
            return null;
        }

        bd.cierraConexion(con);
        return pallets;
    }

    public Object getTipobyID (int id)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        ResultSet rs = null;
        Statement s = null;
        String query = "SELECT * FROM TIPOPALLET WHERE IDTIPOPALLET = " + id;
        Object obj = null;

         try
        {
            con = bd.conectar();
            s = con.createStatement();
            rs = s.executeQuery(query);
            rs.next();
            obj = rs.getObject("NOMBRE");

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos","Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }

        bd.cierraConexion(con);
        return obj;
    }

    public void agregarPaletaCargaMasiva(BEPaleta pallet) {
        DAConexion bd = new DAConexion();
        Connection con = null;
        PreparedStatement s = null;
        String query = "INSERT INTO PALETA (idpaleta,IDTIPOPALLET, DESCRIPCION, ESTADO, NOMBRE)"
                     + " VALUES ("+pallet.getIdPallet()+","+ pallet.getIdTipoPallet() + ",'" + pallet.getDescripcion() +
                       "','1','" + pallet.getNombre() + "')";
        try
        {
           con = bd.conectar();
            s = con.prepareStatement(query);
            s.executeUpdate();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problemas al momento de insertar datos",
                        "Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            
        }

        bd.cierraConexion(con);
      
    }
}
